using System;
using System.Drawing;

namespace HWEngine.Configuration
{
	public class Config : BaseConfigurator
	{
		public static Config Configuration = new Config();

		private int _mainFormLeft = 100;
		private int _mainFormTop = 100;
		private int _mainFormWidth = 640;
		private int _mainFormHeight = 480;
		private bool _drawPointNumbers = true;
		private bool _showBackground = false;
		private String _backgroundFileName = String.Empty;
		private float _lineWidthInLetterEditor = 2;
		private float _lineWidthInEditor = 1;
		private Color _colorInEditor = Color.Black;
		private Color _colorInLetterEditor = Color.Black;
		private int _backgroundShiftX = 0;
		private int _backgroundShiftY = 0;
		private float _backgroundScale = 1;

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public int MainFormLeft
		{
			get { return _mainFormLeft; }
			set { _mainFormLeft = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public int MainFormTop
		{
			get { return _mainFormTop; }
			set { _mainFormTop = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public int MainFormWidth
		{
			get { return _mainFormWidth; }
			set { _mainFormWidth = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public int MainFormHeight
		{
			get { return _mainFormHeight; }
			set { _mainFormHeight = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public float LineWidthInEditor
		{
			get { return _lineWidthInEditor; }
			set { _lineWidthInEditor = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public float LineWidthInLetterEditor
		{
			get { return _lineWidthInLetterEditor; }
			set { _lineWidthInLetterEditor = value; }
		}

		[ConfigAttibute(typeof (ColorFormatter))]
		public Color ColorInEditor
		{
			get { return _colorInEditor; }
			set { _colorInEditor = value; }
		}

		[ConfigAttibute(typeof (ColorFormatter))]
		public Color ColorInLetterEditor
		{
			get { return _colorInLetterEditor; }
			set { _colorInLetterEditor = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public bool DrawPointNumbers
		{
			get { return _drawPointNumbers; }
			set { _drawPointNumbers = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public bool ShowBackground
		{
			get { return _showBackground; }
			set { _showBackground = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public String BackgroundFileName
		{
			get { return _backgroundFileName; }
			set { _backgroundFileName = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public int BackgroundShiftX
		{
			get { return _backgroundShiftX; }
			set { _backgroundShiftX = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public int BackgroundShiftY
		{
			get { return _backgroundShiftY; }
			set { _backgroundShiftY = value; }
		}

		[ConfigAttibute(typeof (DefaultStringFormatter))]
		public float BackgroundScale
		{
			get { return _backgroundScale; }
			set { _backgroundScale = value; }
		}
	}
}